package org.nepu.scr.indexrate.ratecompliance.complianceparams;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.lboot.jpa.entity.BaseEntity;
import org.nepu.scr.indexrate.converter.compliancerate.datacompleteness.*;
import org.nepu.scr.indexrate.converter.compliancerate.datacompleteness.drillingdevice.DrillingMachineMenuConverter1_5;
import org.nepu.scr.indexrate.converter.compliancerate.differencerate.NonDestructiveInspectionConverter;
import org.nepu.scr.indexrate.converter.compliancerate.differencerate.PressureTestConverter1_2;
import org.nepu.scr.indexrate.converter.compliancerate.differencerate.UnitA23Converter;
import org.nepu.scr.indexrate.converter.compliancerate.naturesecurity.DrillingA31Converter;
import org.nepu.scr.indexrate.converter.compliancerate.naturesecurity.PreA32Converter;
import org.nepu.scr.indexrate.converter.compliancerate.operationreliability.*;
import org.nepu.scr.indexrate.converter.riskrate.equipmentrisk.*;
import org.nepu.scr.indexrate.vo.compliancerate.datacompleteness.*;
import org.nepu.scr.indexrate.vo.compliancerate.differencerate.NonDestructiveInspection;
import org.nepu.scr.indexrate.vo.compliancerate.differencerate.PressureTest1_2;
import org.nepu.scr.indexrate.vo.compliancerate.differencerate.UnitA23;
import org.nepu.scr.indexrate.vo.compliancerate.naturesecurity.DrillingA31;
import org.nepu.scr.indexrate.vo.compliancerate.naturesecurity.PreA32;
import org.nepu.scr.indexrate.vo.compliancerate.operationreliability.*;
import org.nepu.scr.indexrate.vo.riskrate.equipmentrisk.*;

import javax.persistence.Convert;
import java.io.Serializable;

@EqualsAndHashCode(callSuper = true)
@Data
@ApiModel("符合性评级评价参数")
public class ComplianceParamsData extends BaseEntity implements Serializable {

    @ApiModelProperty(value = "评价任务ID")
    String complianceId;

    @ApiModelProperty(value = "提升旋转系统功能试验参数")
    @Convert(converter = ImproveA111Converter.class)
    ImproveA111 a111;

    @ApiModelProperty(value = "循环系统试验参数")
    @Convert(converter = CirculationA112Converter.class)
    CirculationA112 a112;

    @ApiModelProperty(value = "井控系统功能试验参数")
    @Convert(converter = WellControlA113Converter.class)
    WellControlA113 a113;

    @ApiModelProperty(value = "动力及电气系统功能试验参数")
    @Convert(converter = PowerA114Converter.class)
    PowerA114 a114;

    @ApiModelProperty(value = "仪表通讯系统功能试验参数")
    @Convert(converter = InstrumentA115Converter.class)
    InstrumentA115 a115;

    @ApiModelProperty(value = "安全系统功能试验参数")
    @Convert(converter = SafeA116Converter.class)
    SafeA116 a116;

    @ApiModelProperty(value = "操作可靠性-压力测试参数")
    @Convert(converter = PressureTestConverter1_1.class)
    PressureTest1_1 a12;

    @ApiModelProperty(value = "无损探伤参数")
    @Convert(converter = NonDestructiveInspectionConverter.class)
    NonDestructiveInspection a21;

    @ApiModelProperty(value = "实际与设计差异-应力测试参数")
    @Convert(converter = PressureTestConverter1_2.class)
    PressureTest1_2 a22;

    @ApiModelProperty(value = "联合调试参数")
    @Convert(converter = UnitA23Converter.class)
    UnitA23 a23;

    @ApiModelProperty(value = "钻修机年检报告参数")
    @Convert(converter = DrillingA31Converter.class)
    DrillingA31 a31;

    @ApiModelProperty(value = "作业前检查报告参数")
    @Convert(converter = PreA32Converter.class)
    PreA32 a32;

    @ApiModelProperty(value = "井架参数")
    @Convert(converter = WellFrameB221Converter.class)
    WellFrameB221 a411;

    @ApiModelProperty(value = "游车大钩参数")
    @Convert(converter = TravellingBlockB222Converter.class)
    TravellingBlockB222 a412;

    @ApiModelProperty(value = "钻井绞车参数")
    @Convert(converter = DrillingB22fConverter.class)
    DrillingB22f a413;

    @ApiModelProperty(value = "转盘参数")
    @Convert(converter = TurntableB224Converter.class)
    TurntableB224 a421;

    @ApiModelProperty(value = "顶驱参数")
    @Convert(converter = TopDriveB223Converter.class)
    TopDriveB223 a422;

    @ApiModelProperty(value = "循环系统直观检查参数")
    @Convert(converter = CirculationB226Converter.class)
    CirculationB226 a43;

    @ApiModelProperty(value = "BOP吊参数")
    @Convert(converter = BOPB227Converter.class)
    BOPB227 a441;

    @ApiModelProperty(value = "防喷器远程控制系统参数")
    @Convert(converter = RemoteB228Converter.class)
    RemoteB228 a442;

    @ApiModelProperty(value = "井控设备参数")
    @Convert(converter = WellControlB229Converter.class)
    WellControlB229 a443;

    @ApiModelProperty(value = "动力及辅助设备参数")
    @Convert(converter = PowerB22aConverter.class)
    PowerB22a a451;

    @ApiModelProperty(value = "应急发电机组、应急供电等电气系统参数")
    @Convert(converter = EmergencyB22bConverter.class)
    EmergencyB22b a452;

    @ApiModelProperty(value = "资料齐全性-钻井设备证书参数")
    @Convert(converter = DrillingMachineCertificateMenuConverter1_5.class)
    DrillingMachineCertificateMenu1_5 a51;

    @ApiModelProperty(value = "资料齐全性-钻井液净化设备及压力管线证书参数")
    @Convert(converter = DrillingFluidMenuConverter1_5.class)
    DrillingFluidMenu1_5 a52;

    @ApiModelProperty(value = "资料齐全性-井控设备证书参数")
    @Convert(converter = WellControlDeviceMenuConverter1_5.class)
    WellControlDeviceMenu1_5 a53;

    @ApiModelProperty(value = "资料齐全性-动力及辅助设备证书参数")
    @Convert(converter = PowerAndAuxiliaryMenuConverter1_5.class)
    PowerAndAuxiliaryMenu1_5 a54;

    @ApiModelProperty(value = "资料齐全性-消防救生设备证书参数")
    @Convert(converter = FireExtinguisherMenuConverter1_5.class)
    FireExtinguisherMenu1_5 a55;

    @ApiModelProperty(value = "资料齐全性-钻井装置基本资料参数")
    @Convert(converter = DrillingMachineMenuConverter1_5.class)
    DrillingMachineMenu1_5 a56;

}
